package com.cskaoyan.javase.overload._basic;

/**
 * 一个类中如果多个方法构成了方法的重载,
 * 那么在方法调用时,究竟使用哪个方法呢?
 * 是由什么决定的呢?
 * 总的来说有两个原则:
 *      1.由实参的数据类型决定,或者就是有没有实参决定
 *      2.就近原则.
 *          在java的语法设计中,如果同时存在多种情况都能匹配
 *          那么优先选择"最近的"
 *          拿方法调用来说,最近指的是,恰好匹配数据类型,或者最近的自动数据类型转换
 *
 * 当然就近原则不是万能,总会出现无法分辨"谁近谁远"的时候
 *  这时,Java代码一般会编译报错!
 *
 *
 * @since 16:27
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        /*test();
        test(120);
        test(120L);*/

        // Ambiguous method call: both 'Demo.test(int, double)' and 'Demo.test(double, int)' match
        // test(1,1);
    }

    /*public static void test(){}
    public static void test(int a){}
    // public static void test(long a){}
    public static void test(float a){}
    public static void test(double a){}*/

    public static void test(int a, double b) {
    }

    public static void test(double a, int b) {
    }

}
